
/*-----------------------------------------------------------------------------\
|                          ChipCFlow Block2Code V1.0                           |
|                                                                              |
| Desenvolvedor: Felipe Simões Lage Gomes Duarte                               |
| Orientador: Prof. Dr. Jorge Luiz e Silva                                     |
| Supervisor: Bruno de Abreu Silva                                             |
|	      Joelmir José Lopes                                               |
|                                                                              |
| Main Project: ChipCflow                                                      |
| Período: Agosto de 2009 a Julho de 2010                                      |
| Codigo: Texto.java                                                           |
| Versão da IDE: NetBeans IDE 6.8 (Build 200912041610)                         |
| Java: 1.6.0_18; Java HotSpot(TM) Client VM 16.0-b13                          |
| Sistema Operacional: Windows 7 versão 6.1 executando em x86; pt_BR           |
|                                                                              |
|             O presente trabalho foi realizado com apoio do CNPq              |
|   Conselho Nacional de Desenvolvimento Científico  e Tecnológico - Brasil    |
\-----------------------------------------------------------------------------*/
package components;//Nome do pacote de dados.

//declaraçao das classes importadas
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.io.Serializable;
import javax.swing.JOptionPane;

public class Texto implements Components, Serializable {

  protected String Textoadd;//String contendo o texto a ser escrito
  private String Fonte;//String Contendo o Nome da Fonte
  private int Tamanho;//Inteiro Contendo o Tamanho da Fonte
  private int Estilo;//Inteiro Contendo o Estilo da Fonte
  private int Mx, My;//Coordenadas da String
  private int rotacao;// Graus de rotaçao da String
  protected Color Cor;//Cor da String

  /*----- Construtor da classe Conectores -----*/
  public Texto() {
    rotacao = 0;
    Textoadd = null;
  }

  /****************************  Getter & Setter  ****************************/
  public int getEstilo() {
    return Estilo;
  }

  public void setEstilo(int Estilo) {
    this.Estilo = Estilo;
  }

  public String getFonte() {
    return Fonte;
  }

  public void setFonte(String Fonte) {
    this.Fonte = Fonte;
  }

  public int getMx() {
    return Mx;
  }

  public void setMx(int Mx) {
    this.Mx = Mx;
  }

  public int getMy() {
    return My;
  }

  public void setMy(int My) {
    this.My = My;
  }

  public int getTamanho() {
    return Tamanho;
  }

  public void setTamanho(int Tamanho) {
    this.Tamanho = Tamanho;
  }

  public String getTextoadd() {
    return Textoadd;
  }

  public void setTextoadd(String Textoadd) {
    this.Textoadd = Textoadd;
  }

  public boolean setTextoadd() {
    //painel para usuario fornecer string
    if (Textoadd == null) {
      Textoadd = JOptionPane.showInputDialog(null, null, "Digite o texto:", JOptionPane.PLAIN_MESSAGE);
      if (Textoadd == null) {
        return false;
      }
    }
    return true;
  }

  public void settings(String Fonte, int Estilo, int Tamanho, Color Cor) {
    this.Fonte = Fonte;
    this.Estilo = Estilo;
    this.Tamanho = Tamanho;
    this.Cor = Cor;
  }

  //metodo para desenhar objeto
  public void desenha(Graphics2D g) {
    g.setColor(Cor);//set a cor da string
    g.setFont(new Font(Fonte, Estilo, Tamanho));//set font e tamanho
    g.drawString(Textoadd, Mx, My);//desenha a string
    g.rotate(this.rotacao, Mx, My);//rotaciona a string
  }

  public boolean procuraForma(int x, int y) {
    int aux1 = Mx + (8 * this.Textoadd.length());
    int aux2 = My - 10;
    if ((x >= Mx) && (x <= aux1) && (y <= My) && (y >= aux2)) {
      return true;//caso acho
    } else {
      return false;//caso nao encontro
    }
  }

  public void mover(int Dx, int Dy) {
    //set coordenadas do objeto
    Mx += Dx;
    My += Dy;
  }

  /*TODO
  @Override//sobrescrita
  //metodo para busca do objeto
  boolean procuraforma(int x, int y) {
  int aux1 = this.x + (8 * this.Textoadd.length());
  int aux2 = this.y - 10;
  if ((x >= this.x) && (x <= aux1) && (y <= this.y) && (y >= aux2))
  return true;//caso acho
  else return false;//caso nao encontro
  }

  @Override//sobrescrita
  void mover(int x, int y) {
  //set coordenadas do objeto
  this.setx(x);
  this.sety(y);
  }

  @Override//sobrescrita
  Operadores copia(int x, int y) {
  Texto S2 = new Texto();//instancia objeto que sera copiado
  S2.setCor(this.getCor());//set cor do objeto a ser desenhado
  //set coordenadas do objeto
  S2.setx(x);
  S2.sety(y);
  S2.Textoadd = this.Textoadd;
  return S2;
  }*/
}
